local isOnline = false

function getHTTP(url)
 local handlex = http.get(url)
 local contents = handlex.readAll()
 handlex.close()
 return contents
end

function openModems()
    for n,sModem in ipairs( peripheral.getNames() ) do
        if peripheral.getType( sModem ) == "modem" then
            if not rednet.isOpen( sModem ) then
                rednet.open( sModem )
            end
        end
    end
end

function closeModems()
    for n,sModem in ipairs( peripheral.getNames() ) do
        if peripheral.getType( sModem ) == "modem" then
            if rednet.isOpen( sModem ) then
                rednet.close( sModem )
            end
        end
    end
end

function getModemStatus(side)
 gui.printAppInfo("net", side .. " modem status: " .. tostring(rednet.isOpen(side)))
 return rednet.isOpen(side)
end

-- DNS self-hosting functions

function setWorkstationStatus(state)
 if state == true and isOnline == false then
  local label = os.getComputerLabel() or "Tesseract"
  rednet.host("tesseract_dns", tostring(os.getComputerID()).."_"..label)
  isOnline = true
  log.writeSyslog("Now susceptible for DNS lookup")
  log.writeMessage("Assigned DNS label "..tostring(os.getComputerID()).."_"..label)
 elseif state == false and isOnline == true then
  local label = os.getComputerLabel or "Tesseract"
  rednet.host("tesseract_dns", tostring(os.getComputerID()).."_"..label)
  isOnline = false
  log.writeSyslog("No longer susceptible for DNS lookup")
  log.writeMessage("De-assigned DNS label "..tostring(os.getComputerID()).."_"..label)
 elseif state == true and isOnline == true then
  gui.printAppWarning("net", "workstation already online")
 elseif state == false and isOnline == false then
  gui.printAppWarning("net", "workstation already offline")
 else
  log.writeSyslog("RedNet interface error")
  return nil, "error in RNI, please consult developer"
 end
end

function getWorkstationStatus()
 return isOnline
end

function findWorkstation(query)
 if rednet.lookup("tesseract_dns", query) ~= nil then
  return true, rednet.lookup("tesseract_dns", query)
 else
  return false, nil
 end
end